package com.hex.ds.hdtp.core.web.metadata.controller;

import com.hex.bigdata.hbda.annotation.Log;
import com.hex.ds.hdtp.core.app.common.page.dto.PageDto;
import com.hex.ds.hdtp.core.app.metadata.service.ISourceConfTemplateService;
import com.hex.ds.hdtp.core.inf.metadata.po.SourceConfTemplatePo;
import com.hex.ds.hdtp.core.web.common.page.PageVo;
import com.hex.ds.hdtp.core.web.common.page.converter.IPageVoAndPageDtoConverter;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Package: com.hex.hdc.web.source.controller
 * @ClassName SourceConfTemplateController
 * @Description:数据源配置模板
 * @Author: Lijinwei
 * @Date 2021/7/16 10:26
 * @Version v1.0
 **/
@Slf4j
@Controller
@Api(tags = "99-系统管理：数据源配置模板")
@RequestMapping("/api/sourceConfTemplate")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SourceConfTemplateController {

    private final ISourceConfTemplateService sourceConfTemplateService;

    private final IPageVoAndPageDtoConverter pageVoAndPageDtoConverter;


    /**
     * @Method: findListByPage
     * @Param: [sourceConfTemplateVo, page]
     * @Return: org.springframework.http.ResponseEntity
     * @Description：分页查询数据源配置模板
     * @Author： Lijinwei
     * @Date： 2021/7/16 10:25
     * @Version： V1.0
     */
    @GetMapping
    @ApiOperation("数据源模板配置分页查询")
    public ResponseEntity queryListByPage(SourceConfTemplatePo sourceConfTemplatePo, PageVo pageVo) {
        log.info("进入到【SourceConfTemplateController.queryListByPage】方法,参数：{}" + sourceConfTemplatePo.toString());
        final PageDto pageDto = pageVoAndPageDtoConverter.toPageDto(pageVo);
        return ResponseEntity.ok(sourceConfTemplateService.queryListByPage(sourceConfTemplatePo, pageDto));
    }

    /**
     * @Method: add
     * @Param: [sourceConfTemplateVo]
     * @Return: org.springframework.http.ResponseEntity
     * @Description：创建数据源配置模板
     * @Author： Lijinwei
     * @Date： 2021/7/16 10:25
     * @Version： V1.0
     */
    @Log("新增数据源模板配置")
    @PostMapping
    @ApiOperation("新增数据源模板配置")
    public ResponseEntity add(@RequestBody SourceConfTemplatePo sourceConfTemplatePo) {
        log.info("进入到【SourceConfTemplateController.add】方法,参数：{}" + sourceConfTemplatePo.toString());
        sourceConfTemplateService.add(sourceConfTemplatePo);
        return ResponseEntity.ok("新增成功");
    }

    /**
     * @Method: update
     * @Param: [sourceConfTemplateVo]
     * @Return: org.springframework.http.ResponseEntity
     * @Description：修改数据源配置模板
     * @Author： Lijinwei
     * @Date： 2021/7/16 10:25
     * @Version： V1.0
     */
    @Log("更新数据源模板配置")
    @PutMapping
    @ApiOperation("更新数据源模板配置")
    public ResponseEntity modifyById(@RequestBody SourceConfTemplatePo sourceConfTemplatePo) {
        log.info("进入到【SourceConfTemplateController.modifyById】方法,参数：{}" + sourceConfTemplatePo.toString());
        sourceConfTemplateService.modifyById(sourceConfTemplatePo);
        return ResponseEntity.ok("更新成功");
    }

    /*
     * @Method: delete <br>
     * @Param: [pkId] <br>
     * @Return: org.springframework.http.ResponseEntity <br>
     * @Description：删除数据源配置<br>
     * @Author： wz.li<br>
     * @Date： 2022/5/7 16:55 <br>
     * @Version： V2.0.2<br>
     */
    @Log("删除数据源模板配置")
    @DeleteMapping
    @ApiOperation("删除数据源模板配置")
    public ResponseEntity delete(@RequestBody List<String> pkIds) {
        log.info("进入到【SourceConfTemplateController.delete】方法,参数：{}" + pkIds.toString());
        sourceConfTemplateService.removeByIds(pkIds);
        return ResponseEntity.ok("删除成功");
    }
}
